package com.arithmeticEveryDay.blueBridge;

import java.util.Arrays;
import java.util.Scanner;

/*

5
12349
54321

5
81450
58905


 */

public class Main3545_Three {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int n = scan.nextInt();
        String x = scan.next();
        String y = scan.next();
        String[] x_arr = x.split("");
        String[] y_arr = y.split("");
        int[] X = new int[n];
        int[] Y = new int[n];
        for (int i = 0; i < x_arr.length; i++) {
            X[n - i - 1] = Integer.parseInt(x_arr[i]);
            Y[n - i - 1] = Integer.parseInt(y_arr[i]);
        }
        /**
         * 因为每个数只有三种操作，及进位，退位，不进不退。 退位比如当21 -> 39 就要进行退位操作 进位就比如29 -> 21 就要进行进位操作
         * 其实记录三个，就是在三个当中找到最小值，因为用来区分是否为进位还是退位。 每个位置都相当于对前面三种可能计算最小值，并记录
         * 其实这边可以不用dp，只需要三个变量一样的可以进行编写
         */
        int[][] dp = new int[n][3];
        // 初始化dp 数组
        dp[0][0] = Math.abs(X[0] - Y[0]); // 直接x->y 不进行退位或者进位
        dp[0][1] = 10 - (X[0] - Y[0]); // 进行进位操作
        dp[0][2] = 10 - (Y[0] - X[0]); // 进行退位操作

        for (int i = 1; i < n; i++) {
            dp[i][0] = Math.min(
                    Math.min(Math.abs(X[i] - Y[i]) + dp[i - 1][0], Math.abs(X[i] - Y[i] + 1) + dp[i - 1][1]),
                    Math.abs(X[i] - Y[i] - 1) + dp[i - 1][2]);
            ;
            dp[i][1] = Math.min(Math.min(10 - (X[i] - Y[i]) + dp[i - 1][0], 9 - (X[i] - Y[i]) + dp[i - 1][1]),
                    11 - (X[i] - Y[i]) + dp[i - 1][2]);
            ;
            dp[i][2] = Math.min(Math.min(10 - (Y[i] - X[i]) + dp[i - 1][0], 11 - (Y[i] - X[i]) + dp[i - 1][1]),
                    9 - (Y[i] - X[i]) + dp[i - 1][2]);
            ;
        }
        for (int i = 0; i < n; i++) {
            System.out.println(Arrays.toString(dp[i]));
        }
        System.out.println(Math.min(Math.min(dp[n - 1][0], dp[n - 1][1]), dp[n - 1][2]));
        scan.close();
    }
}